package com.example.demoone

fun main() {
    val Pone = PersonPro("张三", 18)
    Pone.intro()
}

/**
 * 主构造函数
 */
// 1. 显式主构造函数
class PersonPro constructor(var name: String, var age: Int) {
    init {
        // 初始化的验证
        println("初始化")
        require(name.isNotEmpty()) { "姓名不能为空" }
        require(age > 0) { "年龄不能小于0" }
    }

    fun intro() {
        println("我的名字叫$name,今年${age}岁")
    }
}

// 2. 隐式主构造函数
class PersonProMax(var name: String, var age: Int) {
    // 非法调用会抛出 IllegalArgumentException
    init {
        // 初始化验证
        require(name.isNotEmpty()) { "姓名不能为空" }
        require(age >= 0) { "年龄必须大于0" }
    }

    fun intro() {
        println("name: $name, age: $age")
    }
}